Language modeling in speech recognition

ABSTRACT

Some implementations include a computer-implemented method. The method can include providing a training set of text samples to a semantic parser that associates text samples with actions. The method can include obtaining, for each of one or more of the text samples of the training set, data that indicates one or more domains that the semantic parser has associated with the text sample. For each of one or more domains, a subset of the text samples of the training set can be generated that the semantic parser has associated with the domain. Using the subset of text samples associated with the domain, a language model can be generated for one or more of the domain. Speech recognition can be performed on an utterance using the one or more language models that are generated for the one or more of the domains.

TECHNICAL FIELD

This document generally relates to speech recognition.

BACKGROUND

Speech recognition has become a widely adopted and frequently used modeof interacting with computing devices. Speech input may be moreconvenient and efficient than traditional input modes such as typingthrough a keyboard. For example, mobile computing devices may offerspeech recognition services as an alternative input mode to typingcharacters through a virtual keyboard on a touchscreen. Some computingdevices are configured to accept voice commands from a user as ashortcut to performing certain actions on the computing device. Voicecommands and other speech can be transcribed to text using languagemodels. Language models have been trained using samples of text in alanguage to improve accuracies of the language models.

SUMMARY

This document generally describes techniques for training languagemodels for use in speech recognition. Special language models, which maybe configured to transcribe representations of spoken input into text,can be generated specifically for particular action(s) or otherdomain(s) associated with a special language model. For example, aspecial language model can be trained using only or primarily only textsamples that have been determined to be associated with a particularaction. In some implementations, a plurality of text samples can besorted into groups of text samples based on the action associated withthe text sample. These groups of text samples can be used by a languagemodeling engine to generate multiple special language models. In someexamples, a semantic parser is used to determine the association betweena text sample and an action. The special language models may then beused in speech recognition to improve the accuracy of transcribing anutterance. These techniques may bridge the functions of language modelsand semantic parsers so that speech recognition systems can use each tomore accurately perform speech recognition.

In some implementations, a computer-implemented method includesproviding a training set of text samples to a semantic parser thatassociates text samples with actions. The method can include obtaining,for each of one or more of the text samples of the training set, datathat indicates one or more actions that the semantic parser hasassociated with the text sample. For each of one or more actions, asubset of the text samples of the training set can be generated that thesemantic parser has associated with the action. Using the subset of textsamples associated with the action, a language model can be generatedfor one or more of the actions. Speech recognition can be performed onan utterance using the one or more language models that are generatedfor the one or more of the actions.

In some implementations, a computer-implemented method is provided. Themethod can include providing a training set of text samples to asemantic parser that associates text samples with domains and obtainingdata that indicates associations determined by the semantic parserbetween at least some of the text samples of the training set and one ormore domains. The method can include generating a first subset of textsamples that the semantic parser has associated with a first of the oneor more domains. The method can include generating a first languagemodel for the first of the one or more domains using the first subset oftext samples that the semantic parser has associated with the first ofthe one or more domains. The method can include performing speechrecognition on an utterance using the first language model for the firstof the one or more domains.

These and other implementations can include one or more of the followingfeatures. The text samples in the training set can be identified from atleast one of records of past search queries, web pages, books,periodicals, and other electronic documents.

At least some of the text samples in the training set can be identifiedfrom records of past utterances spoken by a population of users.

Performing speech recognition on the utterance can further includeusing, along with the first language model for the first of the one ormore domains, a general language model that is not associated withparticular domains.

The method can further include generating a second subset of textsamples that the semantic parser has associated with a second of the oneor more domains, and generating a second language model for the secondof the one or more domains using the second subset of text samples thatthe semantic parser has associated with the second of the one or moredomains.

Performing speech recognition on the utterance can further include usingthe second language model for the second of the one or more domains.

Performing speech recognition on the utterance can include obtaining afirst transcription of the utterance from the first language model and asecond transcription of the utterance from the second language model;obtaining respective scores for the first transcription and the secondtranscription that indicate respective likelihoods that the firsttranscription or the second transcription accurately reflects theutterance; and selecting the first transcription or the secondtranscription to provide to a user based at least on the respectivescores for the first transcription and the second transcription.

The method can further include identifying context informationassociated with the utterance, and using the context information to biasthe respective scores for the transcriptions.

Using the context information to bias the respective scores for thetranscriptions can include determining whether the context informationis consistent with the first of the one or more domains or the second ofthe one or more domains.

The method can further include obtaining for particular ones of the textsamples of the training set, a confidence score that indicates aconfidence of the association between the text sample and the one ormore domains that the semantic parser has associated with the textsample.

The method can further include identifying data that indicates userconfirmation of the one or more domains that the semantic parser hasassociated with a particular one of the text samples, and in response,biasing the confidence score for the particular one of the text samplesto indicate a greater confidence in the association between theparticular one of the text samples and the one or more domains.

Generating the first subset of text samples that the semantic parser hasassociated with the first of the one or more domains can includeexcluding text samples from the first subset of the text samples thathave confidence scores below a predetermined threshold.

Generating the first language model for the first of the one or moredomains can include identifying terms in the text samples that areassociated with a class, and performing speech recognition on theutterance using the first language model can include accessing lists ofterms associated with the class.

The one or more domains can be one or more actions that a user mayrequest or command to be executed.

In some implementations, one or more computer-readable storage devicesare provided that have instructions stored thereon that, when executedby one or more computers, cause the one or more computers to performoperations. The operations can include providing a training set of textsamples to a semantic parser that associates text samples with domains;obtaining data that indicates associations determined by the semanticparser between at least some of the text samples of the training set andone or more domains; generating a first subset of text samples that thesemantic parser has associated with a first of the one or more domains;generating a first language model for the first of the one or moredomains using the first subset of text samples that the semantic parserhas associated with the first of the one or more domains; and performingspeech recognition on an utterance using the first language model forthe first of the one or more domains.

These and other implementations can include one or more of the followingfeatures. The text samples in the training set can be identified from atleast one of records of past search queries, web pages, books,periodicals, and other electronic documents.

At least some of the text samples in the training set can be identifiedfrom records of past utterances spoken by a population of users.

Performing speech recognition on the utterance can further includeusing, along with the first language model for the first of the one ormore domains, a general language model that is not associated withparticular domains.

The operations can further include generating a second subset of textsamples that the semantic parser has associated with a second of the oneor more domains, and generating a second language model for the secondof the one or more domains using the second subset of text samples thatthe semantic parser has associated with the second of the one or moredomains.

In some implementations, one or more computers can be configured toprovide a repository of training data that includes a plurality of textsamples in a natural language; a semantic parser configured to process aset of text samples from the plurality of text samples to determine, foreach text sample in the set of text samples, a domain associated withthe text sample; a training set manager configured to generate subsetsof text samples that correspond to respective domains, wherein eachsubset of text samples includes text samples that the semantic parserhas associated with the domain that corresponds to the subset of textsamples; a language modeling engine configured to generate a respectivelanguage model for each of the subsets of text samples; and a speechrecognizer configured to receive an utterance and to recognize theutterance using one or more of the language models that are generatedfor each of the subsets of text samples.

The techniques described herein may offer one or more of the followingadvantages. Special language models can be generated that moreaccurately transcribe utterances directed to one or more actions thatcorrespond to the respective special language models. The speciallanguage models may generate transcriptions of utterances that moreclosely match language that may be accurately parsed by a semanticparser. Multiple language models can be used to perform speechrecognition on an utterance, and a transcription can be selected fromthe multiple language models that is determined to be the most accuratetranscription of the utterance. In some implementations, the output fromspecial language models can be compared to output from an all-purposelanguage model so that a more accurate transcription can be selectedbetween a special language model and the all-purpose language model.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example process for training and using speciallanguage models.

FIG. 2 depicts a schematic diagram of an example system for training andgenerating special language models.

FIG. 3 depicts a schematic diagram of an example system for performingspeech recognition using special language models.

FIG. 4 depicts an example process for training and using speciallanguage models for speech recognition.

FIG. 5 depicts an example of a word lattice representative of a languagemodel that can be used for transcribing one or more words or other termsfrom spoken input.

FIG. 6 depicts an example of a computing device and a mobile computingdevice that can be used to implement the techniques described herein.

Like reference numbers and designation in the various drawings indicatelike elements.

DETAILED DESCRIPTION

This document generally relates to techniques for improving languagemodels in speech recognizers. Language models can be used by speechrecognition engines to generate sequences of terms, such as phrases orsentences, which are determined to be a likely textual transcription ofan utterance or other spoken input in a natural language. For example,if a user speaks, “How do I get to the movie theater by the mall?,” theutterance may be processed through a speech recognition engine such thatan English language model may determine that an audio element in theutterance corresponding to “get” is most likely the word “get” ratherthan “jet” because a probability of the words “I get” being spoken insuccession is much greater than the probability of “I jet.” Languagemodels facilitate resolution of ambiguities in the underlying speechdata for an utterance, thereby improving accuracy in the output of aspeech recognition engine.

Speech recognition engines may include or work in conjunction withsemantic parsers. Semantic parsers can accept textual strings as input,and annotate the strings by identifying terms and phrases in the stringsthat belong to a particular class. For example, given the sentence “Sendan e-mail to Sandy that I am running 5 minutes late,” the semanticparser may annotate the sentence as follows: “<action>Send</action> an<message mode>e-mail</message mode> to <recipient>Sandy</recipient> that<subject>I am running 5 minutes late</subject>.” The output of thesemantic parser can be used, for example, to enable conversational voicecommands on a computing device. Thus, when a user speaks theaforementioned sentence to send the e-mail to Sandy, the speechrecognition system can use a language model to generate a transcriptionof the input, and the semantic parser can then process the transcriptionto determine a command and associated parameters (attributes) for thecommand. For example, the command (or action) for “send” can beidentified by the semantic parser, and then certain parameters that arespecifically associated with that action, such as recipient, subject,message body, etc., can be identified. The output of the semantic parsercan then be provided to an appropriate application or service thatcorresponds to one or more actions identified from the transcription,along with the information that indicates the identified parameters. Forexample, the semantic parser may provide information regarding theannotated transcription of the utterance for sending the e-mail to Sandyto an e-mail application.

This document describes techniques for improving language models bygenerating special, category-specific language models that are trainedwith data belonging to one or more categories of data. In someimplementations, the categories represent different domains ofknowledge, such as different actions that a user may request or commanda computing device to perform. In some implementations, the speciallanguage models are trained with data that has been grouped intocategories based on output from a semantic parser. For example, in orderto generate a language model, a language modeling engine can obtain alarge amount of text that is written in a particular languagecorresponding to the language model that is to be generated, and canstatistically analyze the text to generate a model of the language. Forexample, the language model may analyze the content of web pages, querylogs, books, and more to determine probabilities that two or more termsare used near each other, or in sequence, in a language. Using thetechniques described herein, a large set of training data may beprovided to a semantic parser. The semantic parser may then process oneor more pieces of data in the set, and categorize the data intodifferent groups based on a determined action or other annotationidentified in the data. For example, natural language queries from asearch engine, records of voice commands, and other data can be fed toone or more semantic parsers, and then actions associated with eachpiece of data, or with certain ones of the pieces of data, can bedetermined. After being associated with one or more actions, the datacan be grouped based on actions, and each action-specific group of datamay be provided to a language modeling engine to generate respectiveaction-specific language models (i.e., special language models).Accordingly, language models can be generated, for use in a speechrecognition system, which are trained on subsets of data directed toparticular actions or other categories of data. The special languagemodels may be more accurate in transcribing utterances directed toparticular actions corresponding to the respective language models.Moreover, these techniques may bridge the functions of language modelsand semantic parsers so the special language models produce output thatis more likely to be expected, and thus accurately understood, bysemantic parsers.

Referring now to FIG. 1, a flowchart is depicted of an example process100 for training and using special language models. At stage 102, one ormore special language models are trained using respective sets ofcategorized data. In some implementations, the data in the sets may havebeen categorized based on the output of a semantic parser. At stage 104,the special language models are used during runtime of a computingsystem or device to perform speech recognition on spoken input. Thestages 102 and 104 are described in greater detail below with respect toFIG. 2 and FIG. 3, respectively.

Referring now to FIG. 2, a schematic diagram is depicted of an examplesystem 200 for training and generating special language models. Thesystem 200 includes one or more corpora of training data 202, semanticparser 204, and language modeling engine 208. Generally, data 212 fromcorpora 202 are provided to the semantic parser 204. The semantic parser204 associates one or more pieces of data 212 with a category, such asan action or other domain of knowledge (e.g., actions, restaurants,music, people, movies, etc.), and generates parsed text samples 214 a-e.The annotated data is then associated with one or more special trainingsets (subsets of training samples) 206 a-e. Each of the special trainingsets 206 a-e may then be used by the language modeling engine 208 togenerate respective special language models 210. The features andprocesses of the system 200 are described with greater detail in thefollowing paragraphs.

The one or more corpora of training data 202 include multiple samples oftext in a natural language. The text samples may be obtained fromvarious sources and may be representative of how words, terms, and thelike are used in a language, and/or how sequences of words areconstructed and used in a language. For example, large amounts oftraining data may be obtained by crawling the web and identifyingcontent from web pages, blogs, word processing documents, messages,electronic books, and more.

In some examples, the one or more corpora of training data 202 caninclude data from records of past queries received by a computingservice. For example, a cloud-based speech recognition service mayreceive voice commands and other spoken input from a plurality of usersof the speech recognition service. The speech recognition service maystore or otherwise retain information about the received voice commandsor other spoken input that can later be used for other purposes, such astraining special language models. The information stored or retained maybe transcriptions of the voice commands or other spoken input, andmetadata that indicates certain information about the transcriptions.For example, information may be retained that indicates whether thetranscription was accurate, where such information is available. Thus,in one example, if a user provides a voice query to a search engine, thevoice query may be transcribed by the speech recognition service, andthe search engine may perform a search on the transcribed query.Metadata may then be retained and associated with the transcribedtextual query in the corpora 202 that indicates whether or not thesearch on the transcribed query was successful. For instance, if theuser selected one of the top-ranked search results that was returned inresponse to the transcribed query, then that may be an indication thatthe transcription was accurate, which information may be stored in thecorpora of training data 202. On the other hand, information thatindicates the query or the transcription of the query was not accurateor did not provide satisfactory results may also be retained, such asinformation indicating that a user did not select any search resultsprovided in response to the query or that the user quickly issued a newor modified query after the unsatisfactory query without selecting aresult, or that the user manually revised the transcribed query.

The data in the one or more corpora 202 may include data in one or morelanguages. When data is included for multiple languages, the data can begrouped according to language so that a language, or multiple languages,are associated with each piece of data in the corpora 202. For example,the one or more corpora 202 may include a respective corpus of trainingdata for each of multiple languages. The data can be associated with alanguage so that appropriate data is selected for use in training alanguage model, which may be associated with a particular language.Thus, English training data can be obtained from an English data corpus202, while Mandarin training data can be obtained from a Mandarin datacorpus 202. The language for the training data can be determined orinferred based on the content of the data or using context about asource of the data. For example, a language detection engine (not shown)may analyze the content of the textual elements of data to identifywhether the data is English, Mandarin, French, Spanish, or any otherlanguage. In some implementations, context about a source of the data isused to infer the language. For example, if a particular piece of datain the corpora 202 represents a transcribed voice query, then a languagecan be identified based on characteristics of the user who submitted thequery, a location of the user when the utterance for the query was sent,or a language associated with the language model that was used totranscribe the query.

Certain steps may be taken to anonymize the training data in the corpora202 so that the corpora 202 does not include information usable toidentify information about users associated with the data. In someimplementations, personally identifying information may be purged fromdata in the corpora 202 so that only the content of data that is neededfor training the language models is retained. For example, the corpora202 may include content of a blog post that was scraped from a websitethat included a name, e-mail address, and location of a user who postedthe blog. The data in the corpora 202 may be completely dissociated withthe identifying information from the blog, including information aboutthe user who posted the blog and information about the site from whichthe blog post was scraped. Only the content of the blog post may beretained in the corpora 202, and any relevant anonymized metadata (e.g.,user satisfaction data). In some implementations, the corpora 202 mayinclude textual samples that were generated or accessed in associationwith activity in a user account. The system 200 may be configured sothat a user opts-in or opts-out of having anonymized data analyzed andincluded in the corpora of training data 202.

At stage A (224), one or more samples of training data 212 are providedfrom the one or more corpora of training data 202 to the semantic parser204 to be annotated and/or to be associated with a domain (e.g. action)or other classification. The one or more samples of training data 212that are provided to the semantic parser 204 may be selected inaccording to various criteria. For example, all of the samples that areavailable in the one or more corpora of training data 202 may beselected to be provided to the semantic parser 204, or a subset of allthe samples maybe provided to the semantic parser 204. In somelimitations, the training data in the corpora 202 are filtered so thatonly samples 212 meeting particular criteria are provided to thesemantic parser 204. For example, only samples 212 that were obtainedfrom a certain demographic of users (e.g., users in a certain geographicregion, users within a particular age group, etc.), samples that wereobtained from particular sources (e.g., web pages, social media posts,e-mail, blogs, literature, etc.), samples of a particular type (e.g.,search queries, voice commands, application-specific commands, etc.) maybe selected for training one or more special language models 210.Additionally, only samples that were generated, written, or otherwiseassociated with certain period of time, such as a recent period of time,may be selected, so that language models 210 can be trained only basedon language usage associated with the designated time period. Thus, forexample, language models can be trained using samples 212 that reflectthe most current usage of a particular language since languages evolve,sometimes quickly within the context of user interaction with computingdevices. In some implementations, the samples 212 that will be providedto the semantic parser 204 and used to train one or more speciallanguage models 210 may be identified based on a substantially randomselection of a subset of data samples. In some implementations, theselected samples 212 may be a pseudo-random selection of samples that isrepresentative of the larger set of samples in the one or more corpora202. For example, if ⅓ of all of the training data within the corpora202 were generated by users within a particular demographic, then theselected samples 212 can be selected so as to maintain a substantiallyproportionate amount of samples for the particular demographic. In someimplementations, all or some of the samples 212 of training data can beselected as a result of being associated with user interaction data forthe sample 212. For example, one of the selected samples 212 that was asearch query may be associated with user interaction data that indicateswhether the search query was successful such as whether the user visiteda highly ranked search result that was provided in response to thesearch query. In another example, one of the selected samples 212 mayhave been a voice command such as “Set alarm for 6:30 am.” Userinteraction data for the voice command may indicate whether the userconfirmed some action that was performed in response to the voicecommand. For instance, if a mobile device set the user's alarm for 6:30am in response to the voice command, and prompted the user to confirmthat he or she would like to set the alarm for this time, and the userso confirmed, this confirmation could be saved with the transcription ofthe voice command and made available from the one or more corpora 202.The confirmation or other user interaction data can be useful to thesemantic parser to confirm that an annotation or classification for asample of training data is accurate, as described further below.

In the example of FIG. 2, a representative selection of five differentsamples 212 of textual training data are shown. In this example, each ofthe five samples are short commands. These commands may have beenobtained from one or more sources, including from records of previouslytranscribed voice commands. For example, each of the representativesamples 212 may correspond to a voice command issued by a differentrespective user to an application or service on a mobile computingdevice (e.g., smartphone, tablet). The mobile computing device mayperform speech recognition on the command locally at the device, or mayhave sent audio data for the spoken command to a remote server forspeech recognition to be performed remotely. In either case, a textualtranscription for the voice command may be obtained and stored in theone or more corpora 202. Thus, all or some of the samples 212 shown inFIG. 2 may be transcriptions of voice commands provided that a user hasspoken at a computing device.

The semantic parser 204 receives the samples 212 of training data andassociates an action or otherwise assigns a classification to all orsome of the samples 212. At operation B (226), the semantic parseroutputs the processed samples 212 with an associated action or otherclassification. The semantic parser 204 may include one or more of aclassification engine 216, annotator 218, parser scorer 220, andconfirmation data repository 222. In some implementations, the semanticparser 204 may receive and process the samples 212 serially, or thesamples 212 may be processed in parallel or as a batch. For example, insome implementations, millions or billions of samples 212 may beselected to train the special language models 210, each of which is tobe processed by the semantic parser 204. For efficiency, the operationsof the semantic parser 204 may be scaled and distributed among multiplemachines to process the large quantity of samples 212.

The classification engine 216 analyzes a sample 212 of training data andassigns the sample 212 to one or more classifications. In someimplementations, the classifications can be actions or applicationsassociated with voice commands or other voice interaction services. Forexample, the classification engine 216 can determine an action to whichthe sample 212 is directed or relates to. Thus, the classificationengine 216 can analyze the phrase “Call Bob at home,” and determine fromthe verb “Call” that the sample 212 relates to a command for making atelephone call. The “Call Bob at home” sample can then be associatedwith a “call” action or a “telephone” classification, for example.Similarly, the text sample 212 “How do I get to Caroline's place” can beassociated with a “navigation” action, and the text sample 212 “Set homehumidity to 40% this weekend” can be associated with a “humidification”action.

The classification engine 216 can determine an action or otherclassification associated with a text sample using one or moretechniques. In some implementations, the classification engine 216 canapply rules that have been developed using machine learning techniquesto determine an appropriate action or other classification. For example,a parser training set of text samples that previously have beenassociated with respective actions or other classifications can be usedto develop rules for the classification engine 216. The text samples inthe parser training set may be manually associated with particularactions or other classifications by a user, for example. The manuallyclassified text samples, along with their respective classifications,can be provided to a learning engine (not shown) that determines andrefines rules for the classification engine 216. In someimplementations, a user may confirm whether a hypothesized action orclassification for a text sample that has been determined by theclassification engine 216 is correct, and feedback from the user as tothe correctness of the hypothesis can be used to further tune or refinethe rules. Accordingly, sophisticated classification rules can bedetermined using machine learning techniques. In some implementations,the classification engine 216 may assign an action or otherclassification to a text sample based on a determination that the textsample includes one or more words that have been designated ascorresponding to one or more actions or other classifications. Forexample, the text sample 212 “Send message to Dad that we will meet himat the game tonight at 6:00 PM” can be associated with a messagingaction since the sentence begins with the terms “Send message.”

In some implementations, the classification engine 216 can assign morethan one action to a particular text sample 212. In some cases, multipleactions are associated with a single text sample 212 because differentactions are explicitly determined for respective portions of the textsample 212. For example, given a text sample that includes twoindependent clauses such as “Send message to Len that I will meet him atschool tomorrow morning, and set reminder to meet Len at school at 8:00tomorrow morning,” the classification engine 216 may bifurcate the textsample and associate the first clause with a messaging action, and thesecond clause with a tasks or appointment action, for example. In someimplementations, the classification engine 216 can assign multipleactions to a text sample if the text sample is ambiguous and there is atleast a threshold likelihood that the text sample is properly associatedwith each of multiple actions. For example, the text sample “Did Iremind you to call me yesterday?” may be associated with a tasks orappointment action due to inclusion of “remind” near the beginning ofthe sentence, but may also be associated with a telephone calling actiondue to the inclusion of the phrase “to call me yesterday.”

The semantic parser 204 may include a pre-defined list of actions orother classifications to associate with particular text samples. Theactions in the list may reflect actions that are associated withcomputing devices that employ a speech recognition service. In someimplementations, a mobile computing device may include various servicesand applications that are capable of performing one or more actions inresponse to voice commands. For example, an operating system on asmartphone may include one or more of a native telephone application,e-mail client, web browser, contacts manager, calendar application, andsocial media application. Each of these applications or services may beregistered with a voice recognition service on the mobile computingdevice. The device may listen for spoken input, and perform speechrecognition on the spoken input. Upon determining that the spoken inputis a voice command associated with one of the registered applications orservices, an indication of the voice command can be passed to theappropriate application or service for performance of an identifiedaction. The data may be passed to the registered application or serviceusing an application programming interface (“API”) in some examples. Insome implementations, the list of actions that are available to theclassification engine 216 to associate with text samples 212 is based onactions that have been registered with one or more computing devices byparticular applications or services. In some implementations, a singleapplication or service may register multiple actions, which actions maybe available to the classification engine 216. For example, an e-mailclient application may have actions for composing a new message,forwarding a message, replying to a message, and deleting a message.Thus, the classification engine may associate different actions withdifferent text samples, even when the different actions each areperformed by a common application or service.

The parser scorer 220 can assign a confidence score to associations thatthe classification engine 216 has made between text samples and actionsor other classifications for the text samples. The confidence score fora text sample can indicate a likelihood that the text sample iscorrectly associated with an action. For example, the text sample 212“Set alarm for 6:30 AM on Thursdays” may be associated with an alarmclock action, and the confidence score for the text sample—actionassociation in this case may be relatively high because the content ofthe text sample is not vague or ambiguous, and includes context in thecontent of the text sample that is clearly relevant to setting an alarmclock. For instance, the classification engine 216 may determine thatthe text sample is associated with an alarm clock action based on thebeginning words of the text sample that clearly state the action to beperformed: “Set alarm.” The parser scorer 220 may thus use the structureof the sentence and the identified form of the action verb in thesentence to determine the confidence score. In some implementations, theconfidence score may be further based on additional context from thetext sample. The parser scorer 220 may determine whether the additionalcontext from the text sample is consistent with the form of thesentence, action verb in the sentence, or the action that has beendetermined by the classification engine 216. For example, theclassification engine 216 may have determined that the text sample “Setalarm for 6:30 AM on Thursdays” corresponds to the alarm clock action.Because the text sample includes additional terms, such as a time (6:30AM) and day of the week (Thursdays), that are consistent with the alarmclock action, a relatively high confidence score can be determined forthe association between the text sample and the action. In anotherexample, the classification engine 216 may determine that the textsample “Where did I set the alarm clock last night?” is most closelyassociated with an alarm clock action. However, the parser scorer may220 may determine a relatively low confidence score for the associationbetween the text sample and the alarm clock action in this case. The lowconfidence score may be based on various factors, for example, that thesentence is not structured as a command, the adverb “where” is notgenerally used in a command for setting an alarm clock, and the onlytime or date in the text sample—“last night”—is a past time rather thansome time in the future for which an alarm may be set. In someimplementations, the parser scorer 220 may generate confidence scoresbased on how well one or more features of a text sample align with othertext samples that have been previously confirmed to be associated withparticular actions. For example, if many text samples having structuresand terms similar to that in the text sample “Set alarm for 6:30 AM onThursdays” have previously been correctly associated with the alarmclock action, then the parser scorer 220 may determine a high confidencein the association between the text sample and the alarm clock action.

In some implementations, the parser scorer 220 may use information fromconfirmation data repository 222 to determine confidence scores forassociations between text samples and actions. The confirmation datarepository 222 may include information that indicates whether particulartext samples processed by the semantic parser 204 are verified as beingassociated with one or more actions. For example, a text sample that hasbeen obtained from a transcription of the voice command, “Send messageto Dad that we will meet him at the game tonight at 6:00 PM,” may beassociated with confirmation data that indicates user satisfaction withan action that was performed in response to the voice command. Forinstance, the computing device may have composed a text message to “Dad”in response to the “send message” command. Upon generating the textmessage, the computing device may prompt the user to confirm whether themessage has been generated correctly and whether to send the message. Ifthe message is confirmed, then confirmation data can be generatedverifying that the voice command was correctly transcribed and that themessaging action was properly selected in response to the command. Theconfirmation data 222 can then be obtained by the semantic parser 204and used by the parser scorer 204 to determine a confidence of an actionthat the classification engine 216 has associated with a text sample.For example, the parser scorer 220 can compare an action indicated bythe confirmation data 222 with the action identified by theclassification engine 216 to influence the confidence score for a textsample. Thus, if the confirmation data for a particular text sampleverifies that the user confirmed a particular action to be performed inresponse to a voice command, then the confidence score may be skewedhigher if the action associated with the particular text sample by theclassification engine 216 matches the particular action from theconfirmation data 222. Likewise, if there is a mismatch between theaction identified by classification engine 216 and the action verifiedby confirmation data 222, then the confidence score for a text sample212 may be skewed lower.

The semantic parser 204 can also include an annotation engine 218(annotator). The annotation engine 218 can label portions of a textsample with attributes associated with an action for the text sample. Anattribute is a parameter associated with an action that is usable by acomputing device to perform the action. Different sets of attributes maycorrespond to different actions. For example, a messaging action mayhave attributes such as messaging modality (e.g., microblogger, privatechat, SMS, e-mail), message recipients, subject line, message body,signature line, etc. A media action that plays a media file may havedifferent attributes such as ones that identify the media file to beplayed, a volume level for playing the media file, an option to playaudio with or without video, and other parameters relevant to playing amedia file. Generally, annotation engine 218 is configured to parse textsamples so as to identify important pieces of information from the textsamples. The annotation engine 218 thus facilitates processing naturallanguage voice commands that may be unstructured so that a computingdevice can perform a specified action according to the parametersindicated in the voice command. Users are therefore not limited tointeracting with their computing devices in a constrained, structuredmanner, but can instead provide spoken input in a conversational mannerthat may be understood by the computing devices.

In some implementations, the classification engine 216 may be includedwithin the annotation engine 218. For example, the classification engine216 may identify an action that is associated with a text sample bylabeling a portion of the text sample (e.g., an action verb) thatindicates the action for the text sample. Other attributes for the textsample that correspond to the identified action can then be determinedfrom other portions of the text sample. In some implementations, theclassification engine 216 may classify text samples into differentdomains of knowledge such as restaurants, music, people, movies, orothers. The different domains may then be used, for example, to generaterespective language models for the domains and to apply an appropriatelanguage model during runtime. For example, the language models maydetermine that “How old is Brad Pitt” is a much more likelytranscription than “How old is 10^(th) Street,” because text samples ina people domain are more likely to include the phrase “How old is” thantext samples in a maps or location domain.

In some implementations, the labels from the annotation engine 218 canbe used to generate abstracted text samples. Abstracted text samples aremodified text samples that retain the same structure and general wordusage of the original text sample, but substitute particular terms inthe original text sample with placeholders. For example, as shown inFIG. 2, parsed text samples 214 a-e have had certain original termsstripped from the text samples and substituted with a placeholder thatidentifies a class of the deleted terms. Thus, the original text sample212 “Call Bob at home” is modified to “Call $name at home.” As theoriginal text sample 212 is processed by the semantic parser 204, theannotation engine 218 identifies that the word “Bob” is a name, and thuslabels the name accordingly. Similarly, the original text sample 212“Set alarm for 6:30 AM on Thursdays” can be processed by the semanticparser 204, and the annotation engine 218 can identify that the terms“6:30 AM” and “Thursdays” refer to an alarm time and day of the week,respectively. The semantic parser 204 can then generate a parsed textsample 214 c having placeholders substituted for the specific attributesreferenced in the original text sample, e.g., “Set alarm for $time on$day(s).”

In some implementations, the abstracted text samples can be generated byanother subsystem outside of the semantic parser 204. For example, thesemantic parser 204 may generate labeled output along the lines of“<action>Call</action><callee>Bob</callee> at<location>home</location>.” The output of the semantic parser 204 maynot be abstracted at this stage, but then an abstraction module (notshown) can use the labeled output of the semantic parser 204 to generateabstracted text samples. For example, the abstraction module can use thelabeled output for “Call Bob at home” to determine that one of theattributes for the specified action is a name—i.e., that the <callee>attribute represents the name of an entity, and therefore a $nameplaceholder can be inserted into the abstracted text sample in place ofBob. In some implementations, the abstraction module may be locatedwithin the language modeling engine 208.

Parsed text samples 214 may be generated for all, some, or none of theoriginal text samples 212 in some implementations. In some examples,specific terms used in the original text samples that belong toparticular classes, such as a specific name or time recited in theoriginal text sample, may not be as relevant to generating a languagemodel 210 as the indication of the class to which the terms belong.Therefore, a language model 210 may retain flexibility to recognizeother terms in a class that may not have been explicitly recited in anyof the original text samples 212 on which the language model 210 wastrained. For example, a language model 210 may be trained in part usinga parsed text sample 214 b that has been generated from original textsample 212 “How do I get to Caroline's place?” The parsed text sample214 b, “How do I get to $name('s) place?,” substitutes the name“Caroline” for the $name placeholder. The language model 210 b that istrained using the parsed text sample 214 b may more readily recognizesimilar utterances that use many of the same words and sentencestructure as the original text sample 212, but that use a different name(e.g., “How do I get to Bill's place?”). In some implementations,original text samples 212 are used to train the language models 210, andspecific terms within a class can be identified and substituted by thelanguage model 210 during runtime.

At stage C (228), the parsed text samples 214 output by the semanticparser 204 are grouped by the actions or other classifications that havebeen associated with the parsed text samples 214. Based on thesegroupings, subsets of training samples 206 are generated that includeparsed text samples 214 associated with one or more particular actions.In some implementations, each subset of training samples 206 can includeonly parsed text samples 214 that are associated with one or moreparticular actions, to the exclusion of other text samples associatedwith other actions. Thus, each subset of training samples 206 cancorrespond to one or more particular actions. In some implementations,the subsets of training samples 206 may not be comprised exclusively oftext samples associated with the one or more particular actions thatcorrespond to respective ones of the subsets of training samples 206. Inthese implementations, text samples 214 for one or more particularactions may be overrepresented in the subset as compared to a general,non-action specific collection of text samples in a language. Forexample, all or some of the parsed text samples 214 associated with aparticular action may be grouped and assigned to a particular subset oftraining samples 206, but the particular subset 206 may also include anunderrepresented sampling of other text samples 212 associated withother actions and/or other training data obtained from sources otherthan one or more corpora 202 and semantic parser 204.

To further illustrate stage C (228), FIG. 2 depicts an example of fivedifferent subsets of training samples 206 that are generated fromgroupings of the parsed text samples 214. The depicted subsets 206include a Telephone Training Subset 206 a, Navigation Training Subset206 b, Alarm Training Subset 206 c, Messaging Training Subset 206 d, andHome Controls Training Subset 206 e. Each of the subsets 206 aredepicted as receiving a respective text sample 214 from the semanticparser 204 that has been associated with a respective actioncorresponding to the subset 206. For example, the text sample 212 “CallBob at home” is associated with a telephone calling action. A parsedtext sample 214 a—“Call $name at home”—is generated based on an outputof the semantic parser 204. The parsed text sample 214 a is associatedwith the telephone calling action and is therefore assigned to theTelephone Training Set 206 a, thereby being grouped with other trainingsamples that are associated with the telephone calling action.Similarly, subsets 206 b-e each receives respective parsed text samples214 that match one or more actions corresponding to respective ones ofthe subsets 206 b-e.

In some implementations, less than all of the parsed text samples 214may be included in a subset of training samples 206. Some of the parsedtext samples 214 may be discarded so as to exclude these text samples214 from a special training set (subset of training samples) 206. Insome implementations, certain ones of the parsed text samples 214 may bediscarded from the special training sets 206 due to a low confidencethat the discarded text samples 214 are correctly associated with theone or more actions identified by the semantic parser 204. For example,the classification engine 216 may determine that an alarm clock actionis most likely associated with a text sample 212 that reads “Jimwitnessed events that evening that would alarm him for years.” Yet, theparser scorer 220 may assign a relatively low confidence score to theassociation between the text sample 212 and the alarm clock action sincethe sentence does not strongly correlate with the usual hallmarks of asentence that is actually directed to an alarm clock action. In someimplementations, parsed text samples 214 whose confidence score isdetermined to be below a threshold confidence score or that does nototherwise satisfy a pre-determined threshold score may be discarded.Discarding parsed text samples 214 with low confidence scores can ensurethat the special training sets 206 primarily include only training datathat is actually (or most likely) directed to the particular actionsthat correspond to each of the special training sets 206.

At stage D (230), the special training sets 206 are provided to thelanguage modeling engine 208 to generate special language models 210.The language modeling engine 208 is configured to analyze training dataand to generate, based on the training data, a language model that canbe used, for example, in speech recognition. The language modelingengine 208 can statistically analyze the structure of, and use of termsin, sentences, phrases, and clauses of text from the special trainingsets 206. The language modeling engine 208 can assign probabilities thata sequence of two or more terms will occur in a language, or that two ormore terms will be used near each other in a language. The probabilitiesdetermined by the language modeling engine 208 can then be used by alanguage model during runtime to process an utterance and to selectsequences of terms for a transcription of the utterance that most likelyindicate the actual words used by the speaker. Some example operationsof a language model 210 are described in greater detail below withrespect to FIG. 5. In some implementations, the language modeling enginecan determine probabilities that particular terms will appear insequence with or near a word classifier. For example, the languagemodeling engine 208 may determine a probability that any name (e.g., asindicated by the $name placeholder in parsed text sample 214a) follows aparticular term, rather than or in addition to a probability that aparticular name (e.g., Bob) follows the particular term. Thus, aprobability may be assigned to the sequence “Call $name,” and/or thesequence “Call Bob.”

The language modeling engine 208 can generate a special language model210 for each of the special training sets 206. For example, textualsamples from only Telephone Training Subset 206 a may be used by thelanguage modeling engine 208 to generate a special Telephone LanguageModel 210 a. Similarly, textual samples from only the NavigationTraining Subset 206 b may be used in generating a special NavigationLanguage Model 210 b. Parsed text samples 214 that were not associatedwith particular action(s) corresponding to a particular special trainingset 206 may not be used by the language modeling engine 208 to generatethe special language model 210 for the particular actions(s).Accordingly, each of the special language models 210 can be generatedbased on training data directed to one or more actions or applicationsof a computing device. The resulting special language models 210 maytherefore be more likely to generate accurate transcriptions of speechutterances, such as voice commands, that are directed to an action onwhich one of the special language models 210 was trained. For example, ageneral language model that has been trained on a wide scope of textsamples may not recognize that certain words are commonly used togetherin the context of certain actions. Additionally, the output of languagemodels in speech recognition systems are sometimes provided to asemantic parser. Because the special language models 210 have beentrained on data that has been classified by a semantic parser 204, theoutput of a language model may more likely comport with language thatthe semantic parser 204 can accurately annotate. In someimplementations, the language modeling engine 208 may process parsedtext samples 214 from the special training sets 206 serially as they areavailable, or they may be processed in batch.

In some implementations, the language modeling engine 208 may generatethe special language models 208 without building off of existinglanguage models. In some implementations, the language modeling engine208 may use an existing language model, such as all-purpose languagemodel (general language model) that has been trained with non-actionspecific data for a language, to generate a special language model 210.For example, a special language model 210 may be generated by biasingthe probabilities from the all-purpose language model that particularterms are used in a sequence or near each other in a language. Forinstance, the all-purpose language model may indicate that theprobability of the word “for” following the phrase “alarm” is 0.15, butthe probability may be adjusted upwards for the special TelephoneLanguage Model 210 a to 0.5 if many samples in the Telephone TrainingSubset 206 a used phrases like “Set alarm for” a time.

With reference to FIG. 3, a schematic diagram is depicted of an examplesystem 300 for performing speech recognition using special languagemodels. The system 300 can be configured to perform a process indicatedby stages E-J in the diagram. In some implementations, the system 300includes one or more of a computing device 302, language models 210,211, recognition scorer 304, recognition selector 306, and semanticparser 308.

At stage E (318), an utterance 301 or other form of spoken input isprovided to one or more language models 210, 211. The utterance 301 maybe spoken by a user at a computing device 302. In some implementations,the computing device 302 may be a mobile computing device such as asmartphone, tablet computing device, or wearable computing device suchas a smart watch or intelligent glasses. In some implementations, thecomputing device 302 may be a desktop computer, notebook computer, or anonboard/integrated vehicle electronics system. The computing device 302may passively monitor an audio stream detected by a microphoneoperatively coupled to the computing device 302 to detect an utterance,for example, by recognizing a hotword that triggers further action to beperformed by the device 302. In some implementations, the user 303 mayselect a control on the computing device 302 to activate a speechrecognition service, but the computing device 302 may not listen forspoken input until the control is selected. The computing device 302 mayperform the speech recognition locally on the device 302, or the all ora portion of the utterance 301 may be transmitted over a network (e.g.,the Internet) to a remote server for the speech recognition to beperformed remotely.

The utterance 301 can be provided to one or more language models 210,211. The language models 210, 211 may be stored on the computing device302 for performing local speech recognition, or remotely for performingremote speech recognition. The utterance 301 may be provided to multiplespecial language models 210 and one or more all-purpose language models211. The special language models 210 can be generated using trainingdata that is associated with one or more particular actions, asdescribed in FIG. 2. For example, the Telephone Language Model 210 a maybe specially configured to transcribe utterances 301 relate to callingactions and/or other actions associated with a telephone functionalityon a computing device 302. Similarly, the Navigation Language Model 210b may be specially configured to transcribe utterances 301 that pertainto navigation commands, the Messaging Language Model 210 d speciallyconfigured for transcribing e-mail or other messaging commands, and theHome Controls Language Model 210 e specially configured for transcribingsmart home commands (e.g., set humidity, turn on lights, etc.). Theutterance 301 may also be provided to the all-purpose language model211, which may be trained on data that represents a language generallyrather than being trained exclusively with action-specific data or datathat is overrepresented by action-specific text samples in a language.

In some implementations, the utterance 301 can be processed by one ormore of the language models 210, 211 in parallel. In someimplementations, the utterance 301 may be processed by one or more ofthe language models 210, 211 serially. The utterance 301 may beprocessed by all of the language models 210, 211, or, in some examples,the utterance 301 may be processed only until a textual transcription ofthe utterance 301 from one of the language models 210, 211 is determinedto satisfy a recognition confidence threshold, in which case furtherprocessing by the language models 210, 211 may cease. For example, theutterance 301, “How do I get to Emma's house via I-70?”, may beprocessed first by the all-purpose language model 211, then by theTelephone Language Model 210 a, and then by the Navigation LanguageModel 210 b. The language model 210 b may generate a transcription thatis entirely accurate for the utterance 301, and that has a recognitionconfidence score that is sufficiently high to be confident in the outputof the Navigation Language Model 210 b so that further processing byother special language models 210 is not necessary.

In some implementations, one or more language models 210, 211 may beselected to receive the utterance 301 based on a pre-analysis of audiofor the utterance 301. For example, the utterance 301 may begin with ahotword that indicates a particular action to which the utterance isdirected. The utterance 301 may thus have a first portion that is ahotword and a second portion that includes additional informationrelated to the hotword. For example, a user may speak a command, “Open anew task to remind me to pick up the birthday cake on Thursday.” Thefirst term, “Open,” can be a hotword that is recognizable by a hotworddetector. The hotword detector may be provided on the computing device302 or remote from the computing device 302. The hotword dector may havea limited grammar capable of recognizing a relatively small number ofterms. The terms that are recognizable by the hotword detector maycorrespond to particular actions. Thus, when an utterance 301 isreceived that begins with an action, the hotword detector may recognizethe action, and as a result, the utterance 301 is provided to one ormore of the special language models 210 that correspond to the action.For example, the term “Open” may be registered by an e-mail applicationwith a voice command service on a computing device 302 so that theresults of speech recognition of an utterance 301 including the “Open”command are provided to the e-mail application. Accordingly, because“Open” is associated with a messaging action, when the sentence “Open anew task to remind me to pick up the birthday cake on Thursday” isuttered, the “Open” hotword is detected, and the utterance then providedto the Messaging Language Model 210 d.

At stage F (320), speech recognition is performed on the utterance 301and textual transcriptions 310 of the utterance 301 are generated usingone or more of the language models 210, 211. Each of the language models210, 211 that were provided the utterance 301 may be used individuallyto generate a respective transcription 310. For example, as shown inFIG. 3, the utterance 301, “How do I get to Emma's house via I-70?”, isprovided to the all-purpose language model 211, and multiple speciallanguage models 210 a-e. Each language model generates a respectivetranscription 310. Depending on the utterance 301 and the configurationof the language models 210, 211, some or all of the language models 210,211 may generate different transcriptions 310, or may generateequivalent transcriptions 310. In the example of FIG. 3, each of thelanguage models 210, 211 have produced slightly variant transcriptions310 of the utterance 301. For instance, the all-purpose language model211 output “How do I get to Emma's house by 9:17?” By contrast, thespecial Messaging Language Model 210 d output “Now send this to Emma'shouse via e-mail.” The output from the all-purpose language model 211 ismore accurate than the output from the special Messaging Language Model210 d. Yet, neither of the foregoing language models 210 d, 211 producedan entirely accurate transcription 310 of the utterance 301 that wasactually spoken. On the other hand, the special Navigation LanguageModel 210 b has produced a completely accurate transcription 310 c of“How do I get to Emma's house via I-70?” The accuracy of thetranscription 310 c may be a result of the subject matter of theutterance 301 matching the subject matter of the special NavigationLanguage Model 210 b—i.e., both relate to navigation. Because thespecial Navigation Language Model 210 b has been specially trained withnavigation-related text samples, it is more likely to accuratelytranscribe a navigation-related utterance 301 than other ones of thespecial language models 210 or even the all-purpose language mode 211.However, a special language model 210 that has been trained on data fora first action, and is then requested to transcribe an utterance 301directed to a second action may produce less accurate results than theall-purpose language model 211. For example, the special Home ControlsLanguage Model 210 e is shown in FIG. 3 to have produced the leastaccurate transcription 310 e for utterance 301: “Now set humidity atEmma's house to 70 percent.”

At stage G (322), the system 300 can obtain information that indicatescontext 312 for the utterance 301. The context information 312 may bereceived in conjunction with the utterance 301. The context information312 can include information about the context of the utterance 301 thatis usable to determine which of multiple different transcriptions 310 ofthe utterance 301 is likely most accurate. The context information 312may include information about the user 303 who spoke the utterance 301,information about the computing device 302, information from a profileor account of the user 301 (e.g., interests, demographic information,locations, language), location information, information about people orother entities associated with the user 303 (e.g., a contacts list, mostfrequently or recently called list, social media connections),information about background or environmental noise, information aboutapplications being executed on the computing device 302 when theutterance 301 is submitted for speech recognition, information thatidentifies an application to which the utterance 301 was provided,additional information, or any combination of these. For example, thecontext information 312 depicted in FIG. 3 indicates a location andvelocity of the computing device 302 when the utterance 301 wasprovided, along with the names of favorite contacts associated with anaccount of the user 303. In some implementations, the contextinformation 312 can be anonymized so that personally identifyinginformation is stripped from the information provided to the system 300.The context information 312 may also be deleted as soon as the system300 is done using it in a particular instance. For example, once therecognition scorer 304 has used the context information 312 to determinea recognition confidence score for a particular utterance 301, thecontext information 312 can be deleted immediately. Users may alsoopt-out of or opt into providing context information 312.

At operation H (324), a recognition scorer 304 determines a recognitionconfidence score for each of the transcriptions 310 that indicates alikelihood that the transcription 310 is accurate. Recognitionconfidence scores can be determined for one or more of thetranscriptions 310. In some implementations, the recognition confidencescores can be determined based on information provided by the languagemodels 210, 211. For example, if the special Telephone Language Model210 a determines that utterance 301 includes sequences of terms that arenot commonly used in the context of telephone actions, then theTelephone Language Model 210 a may provide an indication to therecognition scorer 304 of relatively low confidence in the transcription310 b.

In some implementations, the recognition scorer 304 may use the contextinformation 312 to generate a recognition confidence score for atranscription 310. The context information 312 can be analyzed todetermine whether the context associated with an utterance 301 isconsistent with one or more actions associated with special languagemodels 210. If the context information 312 is consistent with an actionassociated with a special language model 210, then the transcription 310produced by that special language model 210 may be assigned a relativelyhigher recognition confidence score. If the context information 312 isinconsistent with an action associated with a special language model210, then the transcription 310 produced by that special language model210 may be assigned a relatively lower recognition confidence score. Forexample, the particular context information 312 shown in FIG. 3indicates that the computing device 302 was traveling at 65 miles perhour at the time the utterance 301 was submitted to the language models210, 211. From this information, the recognition scorer 304 candetermine that the user is driving or otherwise in a moving vehicle, andis not at home. Accordingly, the context information 312 is inconsistentwith actions associated with the special Home Controls Language Model210 e. Therefore, the recognition scorer 304 generates a relatively lowrecognition confidence score of 14 for the transcription 310 e producedby the Home Controls Language Model 210 e. But, the context information312 is consistent with a scenario in which the user is searching fornavigation information, and so the special Navigation Language Model 210b is assigned a relatively high recognition confidence score of 96 forits transcription 310 c. Indeed, the transcription 310 c that is outputby the special Navigation Language Model 210 b is scored highest amongthe transcriptions 310 from all of the special language models 210 andall-purpose language model 211. The all-purpose language model 211 stillscored relatively high, but its transcription 310 a was not entirelyaccurate and its recognition confidence score was somewhat lower thanfor the special Navigation Language Model 210 b.

At operation I (326), the recognition selector 306 can identify one ormore of the transcriptions 310 that were generated by the variouslanguage models 310, 311 to use in response to the utterance 301 thatwas spoken to the computing device 302. In some implementations, theselected transcription may be returned to the computing device anddisplayed. For example, if the user 303 used speech recognition to typeinto the computing device 301 in a notes application, then the contentof the utterance 301—as indicated by the selected transcription—could beinserted into a note in which the user was typing. In someimplementations, the recognition selector 306 can select one or moretranscriptions 310 based on their respective recognition confidencescores. The transcriptions 310 with the highest recognition confidencescores are determined to likely be the most accurate transcriptions. Forexample, the recognition selector 306 may select only transcription 310d from special Language Model 210 d as the transcription most responsiveto the utterance 301 since it has the highest recognition confidencescore.

In some implementations, such as for processing voice commands, theselected transcription(s) 314 can be provided to a semantic parser 308.The semantic parser 308 may perform the same or similar functions as thesemantic parser 204 described in FIG. 2. For example, the semanticparser 308 may associate a transcription 314 with an action, identifyone or more attributes associated with that action, and annotate orotherwise label various portions of the transcription 314 withparticular ones of the attributes. The annotated transcription 316 canthen be used, for example, to complete an action requested by theutterance, such as launching a navigation application and generatingdirections to a destination identified in the transcription 314. Thesemantic parser 308 may perform these operations at stage J (328). Forexample, an annotated transcription 316 of “How do I get to Emma's housevia I-70?” is shown in box 316 of FIG. 3.

FIG. 4 depicts an example process 400 for training and using speciallanguage models for speech recognition. In some implementations, theprocess 400 may be carried out by the process 100, system 200, and/orsystem 300 that are depicted and described with respect to FIGS. 1, 2,and 3, respectively. Generally, the process 400 generates speciallanguage models that are trained to recognize speech within a particularcategory or domain (e.g., directed to a particular action). After one ormore special language models are generated, the special language modelscan be used to transcribe an utterance spoken by a user.

At operation 402, a set of text samples can be provided to a semanticparser. The text samples can be obtained from one or more sources andcan be identified from one or more corpora of data. For example, atleast some of the text samples may represent search queries that havebeen submitted to a search engine. Some of the text samples mayrepresent utterances that users have provided to a computing device andthat have been previously been transcribed. Some text samples may beobtained from the content of web sites and other electronic contentlocated on a network. In some implementations, the text samples may berepresentative of how terms are used in a language to construct phrases,clauses, and sentences. In some implementations, the text samples may bedirected to one or more actions.

At operation 404, a semantic parser analyzes all or particular ones ofthe text samples to generate a parsed text sample. The parsed textsample may be annotated or otherwise labeled to identify one or moreactions (or other domains or categories) that are determined to beassociated with the text sample, and to identify portions of the textsample that indicate values for one or more attributes. In someimplementations, the annotated attributes in a text sample may depend onthe action associated with the text sample. For example, the semanticparser may determine that the text sample “Set alarm for 6:30 AM” isassociated with an alarm clock action. Accordingly, a set of attributesmay be identified and made available for annotations for the textsample, such as an alarm time and day of the week indicator. On theother hand, a text sample that has been associated with an e-mail actionmay be annotated with attributes such as recipient, subject line,message body, and signature.

Using output from the semantic parser, at operation 406, subsets of textsamples are generated. Each of the subsets can be comprised of textsamples that the semantic parser has associated one or more particularactions. For example, all or some of the text samples that areassociated with a navigation action may be grouped to form a specialnavigation subset. Additional subsets may be formed of text samplesassociated with other respective actions.

At operation 408, one or more special language models are generated bytraining each of the special language models with a respective subset oftext samples. For example, a first special language model may begenerated that relates to navigation by using only text samples with thenavigation subset of text samples to train the language model, or byusing an over-representative proportion of navigation-related textsamples as compared to a general language set of text samples thatproportionally reflects the frequency with which multiple differentactions are used in a language as a whole. The special language modelsmay be adapted to more accurately transcribe utterances directed to anaction that matches an action associated with text samples on which thespecial language model was trained.

At operation 410, speech recognition can be performed using the speciallanguage models. For example, a user may utter a voice command to hissmartphone or other computing device. The utterance can be submitted toone or more special language models, and an all-purpose language modelin some implementations. Each of the language models can transcribe theutterance, and the utterance that is most accurate can be identified,for example, to return to the computing device for display to the useror can be provided to a semantic parser.

In some implementations, the operations of a language model can berepresented by a word lattice, as shown in FIG. 5. FIG. 5 depicts anexample of a word lattice 500 used for transcribing one or more words orother terms from spoken input. The word lattice 500 is represented hereas a finite state transducer. The word lattice 500 includes one or morenodes 502 a-g that correspond to the possible boundaries between words.The word lattice 500 includes multiple edges 504 a-l for the possiblewords in several transcription hypotheses that result from the wordlattice 500. In addition, each of the edges 504 a-l can have one or moreweights or probabilities of that edge being the correct edge from thecorresponding node. The weights are determined by the language model andcan be based on, for example, a confidence in the match between speechdata for an utterance and the word for that edge and how well the wordfits grammatically and/or lexically with other words in the word lattice500.

For example, initially, the most probable path through the word lattice500 may include the edges 504c, 504e, 504i, and 504k, which have thetext “we're coming about 11:30.” A second best path may include theedges 504 d, 504 h, 504 j, and 504 l, which have the text “deer huntingscouts 7:30.”

Each pair of nodes may have one or more paths corresponding to thealternate words in the various transcription hypotheses. For example,the initial most probable path between the node pair beginning at thenode 502 a and ending at the node 502 c is the edge 504 c “we're.” Thispath has alternate paths that include the edges 504 a-b “we are” and theedge 504 d “deer.” Accordingly, the edge 504 e “coming” has alternatewords that include the edges 504 f-g “come at” and the edge 504 h“hunting.” The edge 504 i “about” has an alternate word that includesthe edge 504 j “scouts” and the edge 504 k “11:30” has an alternate wordthat includes the edge 504 l “7:30.” In this manner, the word lattice500 can thus be used in determining one or more transcription hypothesesfor spoken input. A score can be associated with each path through theword lattice 500 that represents a confidence of each transcriptionhypothesis. The highest scored hypothesis may be an output of thelanguage model.

FIG. 6 shows an example of a computing device 600 and a mobile computingdevice that can be used to implement the techniques described herein.The computing device 600 is intended to represent various forms ofdigital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, and otherappropriate computers. The mobile computing device is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart-phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

The computing device 600 includes a processor 602, a memory 604, astorage device 606, a high-speed interface 608 connecting to the memory604 and multiple high-speed expansion ports 610, and a low-speedinterface 612 connecting to a low-speed expansion port 614 and thestorage device 606. Each of the processor 602, the memory 604, thestorage device 606, the high-speed interface 608, the high-speedexpansion ports 610, and the low-speed interface 612, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 602 can process instructionsfor execution within the computing device 600, including instructionsstored in the memory 604 or on the storage device 606 to displaygraphical information for a GUI on an external input/output device, suchas a display 616 coupled to the high-speed interface 608. In otherimplementations, multiple processors and/or multiple buses may be used,as appropriate, along with multiple memories and types of memory. Also,multiple computing devices may be connected, with each device providingportions of the necessary operations (e.g., as a server bank, a group ofblade servers, or a multi-processor system).

The memory 604 stores information within the computing device 600. Insome implementations, the memory 604 is a volatile memory unit or units.In some implementations, the memory 604 is a non-volatile memory unit orunits. The memory 604 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 606 is capable of providing mass storage for thecomputing device 600. In some implementations, the storage device 606may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The computer program product can also be tangiblyembodied in a computer- or machine-readable medium, such as the memory604, the storage device 606, or memory on the processor 602.

The high-speed interface 608 manages bandwidth-intensive operations forthe computing device 600, while the low-speed interface 612 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In some implementations, the high-speed interface 608 iscoupled to the memory 604, the display 616 (e.g., through a graphicsprocessor or accelerator), and to the high-speed expansion ports 610,which may accept various expansion cards (not shown). In theimplementation, the low-speed interface 612 is coupled to the storagedevice 606 and the low-speed expansion port 614. The low-speed expansionport 614, which may include various communication ports (e.g., USB,Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or moreinput/output devices, such as a keyboard, a pointing device, a scanner,or a networking device such as a switch or router, e.g., through anetwork adapter.

The computing device 600 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 620, or multiple times in a group of such servers. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 622. It may also be implemented as part of a rack server system624. Alternatively, components from the computing device 600 may becombined with other components in a mobile device (not shown), such as amobile computing device 650. Each of such devices may contain one ormore of the computing device 600 and the mobile computing device 650,and an entire system may be made up of multiple computing devicescommunicating with each other.

The mobile computing device 650 includes a processor 652, a memory 664,an input/output device such as a display 654, a communication interface666, and a transceiver 668, among other components. The mobile computingdevice 650 may also be provided with a storage device, such as amicro-drive or other device, to provide additional storage. Each of theprocessor 652, the memory 664, the display 654, the communicationinterface 666, and the transceiver 668, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 652 can execute instructions within the mobile computingdevice 650, including instructions stored in the memory 664. Theprocessor 652 may be implemented as a chipset of chips that includeseparate and multiple analog and digital processors. The processor 652may provide, for example, for coordination of the other components ofthe mobile computing device 650, such as control of user interfaces,applications run by the mobile computing device 650, and wirelesscommunication by the mobile computing device 650.

The processor 652 may communicate with a user through a controlinterface 658 and a display interface 656 coupled to the display 654.The display 654 may be, for example, a TFT (Thin-Film-Transistor LiquidCrystal Display) display or an OLED (Organic Light Emitting Diode)display, or other appropriate display technology. The display interface656 may comprise appropriate circuitry for driving the display 654 topresent graphical and other information to a user. The control interface658 may receive commands from a user and convert them for submission tothe processor 652. In addition, an external interface 662 may providecommunication with the processor 652, so as to enable near areacommunication of the mobile computing device 650 with other devices. Theexternal interface 662 may provide, for example, for wired communicationin some implementations, or for wireless communication in otherimplementations, and multiple interfaces may also be used.

The memory 664 stores information within the mobile computing device650. The memory 664 can be implemented as one or more of acomputer-readable medium or media, a volatile memory unit or units, or anon-volatile memory unit or units. An expansion memory 674 may also beprovided and connected to the mobile computing device 650 through anexpansion interface 672, which may include, for example, a SIMM (SingleIn Line Memory Module) card interface. The expansion memory 674 mayprovide extra storage space for the mobile computing device 650, or mayalso store applications or other information for the mobile computingdevice 650. Specifically, the expansion memory 674 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, theexpansion memory 674 may be provide as a security module for the mobilecomputing device 650, and may be programmed with instructions thatpermit secure use of the mobile computing device 650. In addition,secure applications may be provided via the SIMM cards, along withadditional information, such as placing identifying information on theSIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory(non-volatile random access memory), as discussed below. The computerprogram product contains instructions that, when executed, perform oneor more methods, such as those described above. The computer programproduct can be a computer- or machine-readable medium, such as thememory 664, the expansion memory 674, or memory on the processor 652. Insome implementations, the computer program product can be received in apropagated signal, for example, over the transceiver 668 or the externalinterface 662.

The mobile computing device 650 may communicate wirelessly through thecommunication interface 666, which may include digital signal processingcircuitry where necessary. The communication interface 666 may providefor communications under various modes or protocols, such as GSM voicecalls (Global System for Mobile communications), SMS (Short MessageService), EMS (Enhanced Messaging Service), or MMS messaging (MultimediaMessaging Service), CDMA (code division multiple access), TDMA (timedivision multiple access), PDC (Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA2000, or GPRS (GeneralPacket Radio Service), among others. Such communication may occur, forexample, through the transceiver 668 using a radio-frequency. Inaddition, short-range communication may occur, such as using aBluetooth, WiFi, or other such transceiver (not shown). In addition, aGPS (Global Positioning System) receiver module 670 may provideadditional navigation- and location-related wireless data to the mobilecomputing device 650, which may be used as appropriate by applicationsrunning on the mobile computing device 650.

The mobile computing device 650 may also communicate audibly using anaudio codec 660, which may receive spoken information from a user andconvert it to usable digital information. The audio codec 660 maylikewise generate audible sound for a user, such as through a speaker,e.g., in a handset of the mobile computing device 650. Such sound mayinclude sound from voice telephone calls, may include recorded sound(e.g., voice messages, music files, etc.) and may also include soundgenerated by applications operating on the mobile computing device 650.

The mobile computing device 650 may be implemented in a number ofdifferent forms, as shown in the figure. For example, it may beimplemented as a cellular telephone 680. It may also be implemented aspart of a smart-phone 682, personal digital assistant, or other similarmobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms machine-readable medium andcomputer-readable medium refer to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term machine-readable signal refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (LAN), a wide area network (WAN), and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Although various implementations have been described in detail above,other modifications are possible. In addition, the logic flows depictedin the figures do not require the particular order shown, or sequentialorder, to achieve desirable results. In addition, other steps may beprovided, or steps may be eliminated, from the described flows, andother components may be added to, or removed from, the describedsystems. Accordingly, other implementations are within the scope of thefollowing claims.

What is claimed is:
 1. A computer-implemented method, comprising:providing a training set of text samples to a semantic parser thatassociates text samples with domains; obtaining data that indicatesassociations determined by the semantic parser between at least some ofthe text samples of the training set and one or more domains; generatinga first subset of text samples that the semantic parser has associatedwith a first of the one or more domains; generating a first languagemodel for the first of the one or more domains using the first subset oftext samples that the semantic parser has associated with the first ofthe one or more domains; and performing speech recognition on anutterance using the first language model for the first of the one ormore domains.
 2. The computer-implemented method of claim 1, wherein thetext samples in the training set are identified from at least one ofrecords of past search queries, web pages, books, periodicals, and otherelectronic documents.
 3. The computer-implemented method of claim 1,wherein at least some of the text samples in the training set areidentified from records of past utterances spoken by a population ofusers.
 4. The computer-implemented method of claim 1, wherein performingspeech recognition on the utterance further comprises using, along withthe first language model for the first of the one or more domains, ageneral language model that is not associated with particular domains.5. The computer-implemented method of claim 1, further comprising:generating a second subset of text samples that the semantic parser hasassociated with a second of the one or more domains; and generating asecond language model for the second of the one or more domains usingthe second subset of text samples that the semantic parser hasassociated with the second of the one or more domains.
 6. Thecomputer-implemented method of claim 5, wherein performing speechrecognition on the utterance further comprises using the second languagemodel for the second of the one or more domains.
 7. Thecomputer-implemented method of claim 6, wherein performing speechrecognition on the utterance comprises: obtaining a first transcriptionof the utterance from the first language model and a secondtranscription of the utterance from the second language model; obtainingrespective scores for the first transcription and the secondtranscription that indicate respective likelihoods that the firsttranscription or the second transcription accurately reflects theutterance; and selecting the first transcription or the secondtranscription to provide to a user based at least on the respectivescores for the first transcription and the second transcription.
 8. Thecomputer-implemented method of claim 7, further comprising identifyingcontext information associated with the utterance, and using the contextinformation to bias the respective scores for the transcriptions.
 9. Thecomputer-implemented method of claim 8, wherein using the contextinformation to bias the respective scores for the transcriptionscomprises determining whether the context information is consistent withthe first of the one or more domains or the second of the one or moredomains.
 10. The computer-implemented method of claim 1, furthercomprising obtaining, for particular ones of the text samples of thetraining set, a confidence score that indicates a confidence of theassociation between the text sample and the one or more domains that thesemantic parser has associated with the text sample.
 11. Thecomputer-implemented method of claim 10, further comprising identifyingdata that indicates user confirmation of the one or more domains thatthe semantic parser has associated with a particular one of the textsamples, and in response, biasing the confidence score for theparticular one of the text samples to indicate a greater confidence inthe association between the particular one of the text samples and theone or more domains.
 12. The computer-implemented method of claim 10,wherein generating the first subset of text samples that the semanticparser has associated with the first of the one or more domainscomprises excluding text samples from the first subset of the textsamples that have confidence scores below a predetermined threshold. 13.The computer-implemented method of claim 1, wherein generating the firstlanguage model for the first of the one or more domains comprisesidentifying terms in the text samples that are associated with a class,and wherein performing speech recognition on the utterance using thefirst language model comprises accessing lists of terms associated withthe class.
 14. The computer-implemented method of claim 1, wherein theone or more domains are one or more actions that a user may request orcommand to be executed.
 15. One or more computer-readable storagedevices having instructions stored thereon that, when executed by one ormore computers, cause the one or more computers to perform operationscomprising: providing a training set of text samples to a semanticparser that associates text samples with domains; obtaining data thatindicates associations determined by the semantic parser between atleast some of the text samples of the training set and one or moredomains; generating a first subset of text samples that the semanticparser has associated with a first of the one or more domains;generating a first language model for the first of the one or moredomains using the first subset of text samples that the semantic parserhas associated with the first of the one or more domains; and performingspeech recognition on an utterance using the first language model forthe first of the one or more domains.
 16. The one or morecomputer-readable storage devices of claim 15, wherein the text samplesin the training set are identified from at least one of records of pastsearch queries, web pages, books, periodicals, and other electronicdocuments.
 17. The one or more computer-readable storage devices ofclaim 15, wherein at least some of the text samples in the training setare identified from records of past utterances spoken by a population ofusers.
 18. The one or more computer-readable storage devices of claim15, wherein performing speech recognition on the utterance furthercomprises using, along with the first language model for the first ofthe one or more domains, a general language model that is not associatedwith particular domains.
 19. The one or more computer-readable storagedevices of claim 15, wherein the operations further comprise: generatinga second subset of text samples that the semantic parser has associatedwith a second of the one or more domains; and generating a secondlanguage model for the second of the one or more domains using thesecond subset of text samples that the semantic parser has associatedwith the second of the one or more domains.
 20. A system comprising: oneor more computers configured to provide: a repository of training datathat includes a plurality of text samples in a natural language; asemantic parser configured to process a set of text samples from theplurality of text samples to determine, for each text sample in the setof text samples, a domain associated with the text sample; a trainingset manager configured to generate subsets of text samples thatcorrespond to respective domains, wherein each subset of text samplesincludes text samples that the semantic parser has associated with thedomain that corresponds to the subset of text samples; a languagemodeling engine configured to generate a respective language model foreach of the subsets of text samples; and a speech recognizer configuredto receive an utterance and to recognize the utterance using one or moreof the language models that are generated for each of the subsets oftext samples.